<?php 

/*
 * funcoes genericas para as funcoes deste script
 */

/** formulario padrao de cadastro de restricoes de modalidades de bolsa, serve
 * tanto para restricoes de campus, como para de condicoes */
function modalidades_restricoes_form(&$form, $form_state, $objeto) {
	$form['objeto'] = array(
			'#type' 				=> 'value',
			'#value' 				=> $objeto, // objeto que vai armazenar os dados cadastrados
	);
	
	// Tabela de Selecao de restricoes de modalidade
	$form['table'] = array
	(
			'#type' 		=> 'tableselect',
			'#header' 	=> array(Modalidade::TYPE => t('Modalidades') ),
			'#options' 	=> package_assoc_entities(Modalidade::TYPE, Modalidade::TYPE), // carrega as modalidades ja cadastradas
			'#empty'		=> t('Não há outras Modalidades cadastradas no momento!'),
	);
	
}

/** Retira os dados do formulario */
function modalidades_restricoes_form_data(&$form_state) {
	$objeto = $form_state['values']['objeto'];	
	$objeto->restricoes = array();
					
	foreach ( ($form_state['values']['table']) as $line) {
		array_push($objeto->restricoes, $line);
	}
	
	return $objeto;
}

/*
 * 
 * restricoes de campus
 * 
 */

/** formulario de restricoes de modalidades de bolsa para um determinado campus */
function modalidades_campus_restricoes_form($form, $form_state, $campus_id) {
	$campus = DAO::daoFactory(Campus::TYPE)->get($campus_id);
	modalidades_restricoes_form($form, $form_state, $campus);
	$form['submit'] = array(
			'#type' 	=> 'submit',
			'#value' 	=> t('Cadastrar'),
	);
	return $form;
}

/** */
function modalidades_campus_restricoes_form_validate($form, $form_state) {}

/** grava as restricoes de modalidade para um campus na base de dados */
function modalidades_campus_restricoes_form_submit($form, $form_state) {
	$campus = modalidades_restricoes_form_data($form_state); // pega os dados do formulario
	
	foreach ($campus->restricoes as $line) {
		if ($line != 0) {
			$restricao = new stdClass();
			$restricao->campus_id = $campus->id;
			$restricao->modalidade_id = $line;
			drupal_write_record('restricao_campus', $restricao);
		}
	}
	
	drupal_set_message(t("Restrições cadastradas com sucesso") );
	drupal_goto("estaticos/campus/". $campus->id );
}

/*
 * 
 * restricoes de condicao
 * 
 */

/** */
function modalidades_condicao_restricoes_form($form, $form_state, $condicao_id) {
	$condicao = DAO::daoFactory(Condicao::TYPE)->get($condicao_id);
	modalidades_restricoes_form($form, $form_state, $condicao);
	$form['submit'] = array(
			'#type' 	=> 'submit',
			'#value' 	=> t('Cadastrar'),
	);
	return $form;
}

/** */
function modalidades_condicao_restricoes_form_validate($form, $form_state) {}

/** */
function modalidades_condicao_restricoes_form_submit($form, $form_state) {
	$condicao = modalidades_restricoes_form_data($form_state); // pega os dados do formulario
	
	foreach ($condicao->restricoes as $line) {
		if ($line != 0) {
			$restricao = new stdClass();
			$restricao->condicao_id = $condicao->id;
			$restricao->modalidade_id = $line;
			drupal_write_record('restricao_condicao', $restricao);
		}
	}
	
	drupal_set_message(t("Restrições cadastradas com sucesso") );
	drupal_goto("estaticos/condicao/". $condicao->id );
}


